package com.part2.action.common;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;
  
public class Config {   
	private static final String filePath = Config.class.getResource("").toString().substring(6);
	private static final String fileName = "info.properties";
	private static final String path = filePath+fileName;
 //根据key读取value   
 public static String readValue(String key) {   
  Properties props = new Properties();   
        try {   
         InputStream in = new BufferedInputStream (new FileInputStream(path));   
         props.load(in);   
         String value = props.getProperty (key);   
            return value;   
        } catch (Exception e) {   
         e.printStackTrace();   
         return null;   
        }   
 }   
    
 //读取properties的全部信息   
    public static void readProperties() {   
     Properties props = new Properties();   
        try {   
         InputStream in = new BufferedInputStream (new FileInputStream(path));   
         props.load(in);   
            Enumeration en = props.propertyNames();   
             while (en.hasMoreElements()) {   
              String key = (String) en.nextElement();   
                    String Property = props.getProperty (key);   
//                    System.out.println(key+Property);   
                }   
        } catch (Exception e) {   
         e.printStackTrace();   
        }   
    }   
  
    //写入properties信息   
    public static void writeProperties(String parameterName,String parameterValue) {   
     Properties prop = new Properties();   
     try {   
      InputStream fis = new FileInputStream(path);   
            //从输入流中读取属性列表（键和元素对）   
            prop.load(fis);   
            //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。   
            //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。   
            OutputStream fos = new FileOutputStream(path);   
            prop.setProperty(parameterName, parameterValue);   
            //以适合使用 load 方法加载到 Properties 表中的格式，   
            //将此 Properties 表中的属性列表（键和元素对）写入输出流   
            prop.store(fos, "Update '" + parameterName + "' value");   
        } catch (IOException e) {   
         System.err.println("Visit "+path+" for updating "+parameterName+" value error");   
        }   
    }   
  
//    public static void main(String[] args) {   
//    	String filePath = Config.class.getResource("").toString().substring(6);
//    	String fileName = "info.properties";
//    	String age =  readValue( filePath+fileName,"companyName"); 
//    	writeProperties(filePath+fileName, "companyName", "<p>123</p>");
//    	System.out.println(age);
//    }   
}  

